package org.wzh.spring.di.demos;

import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;

/**
 * 在Web应用中,如果能够实例化在会话和请求范围内共享的bean,那将是非常有价值的事情.例如,在典型的电子商务应用中,可能会有一个bean代表用户的购物车.如果
 * 购物车是单例的话,那么将会导致所有的用户都会向同一个购物车中添加商品.另一方面,如果购物车是原型作用域的,那么在应用中某一个地方王购物车中添加商品,在应用的
 * 另外一个地方可能就不可用了,应为在这里注入的是另外一个原型作用域的购物车.
 * 就购物车bean来说,会话作用域是最为合适的,因为它与给定的用户关联性最大,要指定会话作用域,我们可以使用@Scope注解,它的使用方式与指定原型作用域是相同的.
 * @author Pear
 *
 * 这里,我们将值value设置成了WebApplicationContext中的SCOPE_SESSION常量(它的值时session).这回告诉Spring为Web应用中的每个会话创建一个ShoppingCart.
 * 这回创建多个ShoppingCart bean的实例,但是对于给定的会话只会创建一个实例,在当前会话相关的操作中,这个bean实际上相当于单例的.
 * 
 * proxyMode属性被设置成了ScopedProxyMode.INTERFACES.这个属性解决了将会话或请求作用域的bean注入到单例bean中所遇到的问题.
 */
public interface ShoppingCart2 {

}
